<?php
//   +----------------------------------------------------------------------
//   | Copyright (c) 2015-2025 http://www.hdphp.cn All rights reserved.
//   | Licensed ( http://www.hdphp.cn/licenses/ )
//   | Author: Jack <sophia2152@qq.com>
//   | 官方网址: http://www.hdphp.cn
//   | 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用。
//   | 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
//   +----------------------------------------------------------------------
namespace app\dao\system\admin;

use app\dao\BaseDao;
use app\model\system\admin\SystemAdmin;

/**
 * Class：系统登录数据访问层
 * 创建人：Jack
 * 创建时间：2023/7/29 14:47
 * @package app\dao\system\admin
 */
class SystemAdminDao extends BaseDao
{

    /**
     * 注释：设置模型
     * 创建人：Jack
     * 创建时间：2023/7/29 16:14
     * @return string
     */
    protected function setModel(): string
    {
        return SystemAdmin::class;
    }

    /**
     * 注释：获取列表
     * 创建人：Jack
     * 创建时间：2023/7/29 16:12
     * @param array  $where 条件
     * @param int    $page  页码
     * @param int    $limit 数量
     * @param string $field 字段
     * @return array
     */
    public function getList(array $where, int $page = 0, int $limit = 0, string $field = '*')
    {
        return $this->search($where)->field($field)->when($page && $limit, function ($query) use ($page, $limit) {
            $query->page($page, $limit);
        })->select()->toArray();
    }

    /**
     * 注释：当前账号是否可用
     * 创建人：Jack
     * 创建时间：2023/8/1 8:54
     * @param string $username
     * @param int    $id
     * @return int
     */
    public function isUsernameUsable(string $username, int $id)
    {
        return $this->search(['username' => $username, 'is_delete' => 0])->where('id', '<>', $id)->count();
    }

    /**
     * 注释：账号查询
     * 创建人：Jack
     * 创建时间：2023/7/29 16:14
     * @param string $username
     * @param int    $adminType
     * @return array|mixed
     */
    public function usernameByAdmin(string $username, int $adminType = 1)
    {
        return $this->search(['username' => $username, 'is_delete' => 0, 'status' => 1, 'admin_type' => $adminType])->find();
    }

    /**
     * 注释：手机查询
     * 创建人：Jack
     * 创建时间：2023/7/29 16:14
     * @param string $phone
     * @param int    $adminType
     * @return array|mixed
     */
    public function phoneByAdmin(string $phone, int $adminType = 1)
    {
        return $this->search(['phone' => $phone, 'is_delete' => 0, 'status' => 1, 'admin_type' => $adminType])->find();
    }

    /**
     * 注释：获取getAdminIds
     * 创建人：Jack
     * 创建时间：2023/7/30 15:23
     * @param int $level
     * @return array
     */
    public function getAdminIds(int $level)
    {
        return $this->getModel()->where('level', '>=', $level)->column('id', 'id');
    }

    /**
     * 注释：获取低于等级的管理员名称和id
     * 创建人：Jack
     * 创建时间：2023/7/30 16:15
     * @param string $field
     * @param int    $level
     * @return array
     */
    public function getOrdAdmin(string $field = 'true_name,id', int $level = 0)
    {
        return $this->getModel()->where('level', '>=', $level)->field($field)->select()->toArray();
    }
}